import axios from 'axios'

/**
 * 获取服务URL
 * @param {string} serviceName 服务名称
 * @returns {Promise<string>} 服务完整URL
 * @throws {Error} 当服务不可用或请求失败时抛出错误
 */
export async function getServiceUrl(serviceName) {
  try {
    // 调用后端封装的Consul代理API
    const response = await axios.get(`/api/consul/service/${serviceName}`)
    const serviceInfo = response.data
    
    // 直接返回后端已经构造好的URL
    return serviceInfo.url
    // 或者如果你需要自己构造URL（如果后端没有返回url字段）
    // return `http://${serviceInfo.address}:${serviceInfo.port}`
    
  } catch (error) {
    console.error('获取服务URL失败:', error)
    
    // 根据错误类型抛出更具体的错误信息
    if (error.response) {
      // 请求已发出，服务器响应状态码不在2xx范围内
      if (error.response.status === 404) {
        throw new Error(`服务 ${serviceName} 不存在或没有健康实例`)
      } else {
        throw new Error(`后端服务错误: ${error.response.status}`)
      }
    } else if (error.request) {
      // 请求已发出但没有收到响应
      throw new Error('无法连接到后端服务')
    } else {
      // 请求配置出错
      throw new Error('请求配置错误')
    }
  }
}